/*
 * main.c
 * Initialisation et affichage du menu principal
 */

#include "prisoner.h"

int printLog(char *texte)
{
	FILE *f = fopen("prisoner.log", "a+");
	fprintf(f, "%s\n", texte);
	fclose(f);
	printf("%s\n", texte);
	return 0;
}

int main() {
	// définition des variables nécessaires pour l'initialisation
	// de notre fenêtre
	sfEvent Event;
	sfVideoMode Mode = { LONGUEUR_FENETRE, LARGEUR_FENETRE, 32 };
	sfWindowSettings Settings = { 24, 8, 0 };

	// création de notre fenêtre principale
	printLog("creation de la fenetre");
	App = sfRenderWindow_Create(Mode, "Prisoner", sfClose, Settings);
	sfRenderWindow_SetFramerateLimit(App, 60);

	// chargement des images nécessaires pour le jeu
	imgSol = sfImage_CreateFromFile("sol.png");
	imgMur = sfImage_CreateFromFile("mur.png");

	imgDepart_droite = sfImage_CreateFromFile("depart_droite.png");
	imgDepart_gauche = sfImage_CreateFromFile("depart_gauche.png");
	imgDepart_haut = sfImage_CreateFromFile("depart_haut.png");
	imgDepart_bas = sfImage_CreateFromFile("depart_bas.png");

	imgDG_haut= sfImage_CreateFromFile("DG_haut.png");
	imgDG_bas= sfImage_CreateFromFile("DG_bas.png");
	imgDG_droite= sfImage_CreateFromFile("DG_droite.png");
	imgDG_gauche= sfImage_CreateFromFile("DG_gauche.png");

	imgDS_haut_bas= sfImage_CreateFromFile("DS_haut_bas.png");
	imgDS_bas_haut= sfImage_CreateFromFile("DS_bas_haut.png");
	imgDS_droite_gauche= sfImage_CreateFromFile("DS_droite_gauche.png");
	imgDS_gauche_droite= sfImage_CreateFromFile("DS_gauche_droite.png");

	imgArrivee = sfImage_CreateFromFile("arrive.png");

	imgCle = sfImage_CreateFromFile("cle.png");
	imgCaisse = sfImage_CreateFromFile("caisse.png");

	imgPorte_fermee = sfImage_CreateFromFile("porte_fermee.png");
	imgPorte_ouverte = sfImage_CreateFromFile("porte_ouverte.png");

	imgGarde_droite[1] = sfImage_CreateFromFile("joueur_droite_1.png");
	imgGarde_gauche[1] = sfImage_CreateFromFile("joueur_gauche_1.png");
	imgGarde_haut[1] = sfImage_CreateFromFile("joueur_haut_1.png");
	imgGarde_bas[1] = sfImage_CreateFromFile("joueur_bas_1.png");
	imgGarde_droite[0] = sfImage_CreateFromFile("joueur_droite_0.png");
	imgGarde_gauche[0] = sfImage_CreateFromFile("joueur_gauche_0.png");
	imgGarde_haut[0] = sfImage_CreateFromFile("joueur_haut_0.png");
	imgGarde_bas[0] = sfImage_CreateFromFile("joueur_bas_0.png");
	imgGarde_droite[2] = sfImage_CreateFromFile("joueur_droite_2.png");
	imgGarde_gauche[2] = sfImage_CreateFromFile("joueur_gauche_2.png");
	imgGarde_haut[2] = sfImage_CreateFromFile("joueur_haut_2.png");
	imgGarde_bas[2] = sfImage_CreateFromFile("joueur_bas_2.png");


	// appel à la fonction d'initialisation de l'éditeur
	gm_Init();

	// tant que la fenêtre est ouverte
	while (sfRenderWindow_IsOpened(App))
	{
		// on vérifie si il y a un événement en attente
		while (sfRenderWindow_GetEvent(App, &Event))
		{
			// si on souhaite fermer la fenêtre
			if (Event.Type == sfEvtClosed)
				sfRenderWindow_Close(App);

			// on traite l'événement que nous avons récupéré
			ed_ProcessEvent(Event);
		}

		// vidage de la fenêtre
		sfRenderWindow_Clear(App, sfBlack);

		// mise à jour de l'éditeur
		gm_Loop();

		// mise à jour du contenu de la fenêtre
		sfRenderWindow_Display(App);
	}

	// destruction de l'éditeur
	gm_Destroy();
	return 0;
}
